home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / lib / ubiquity / clock-setup / finish-install < prev   
Text File  |  2008-10-29  |  3KB  |  132 lines

  1. #!/bin/sh
  2. set -e
  3.  
  4. . /usr/share/debconf/confmodule
  5.  
  6. log() {
  7.     logger -t clock-setup "$@"
  8. }
  9. warning() {
  10.     log "warning: $*"
  11. }
  12.  
  13. os_needs_local_clock () {
  14.     while read line; do
  15.         shortname=$(echo "$line" | cut -d : -f 3)
  16.         case $shortname in
  17.         MS-DOS*|Windows*|FreeDOS*) # keep in sync with os-prober
  18.             return 0
  19.         ;;
  20.         esac
  21.     done
  22.     return 1
  23. }
  24.  
  25. pri=high
  26.  
  27. if db_fget clock-setup/utc seen && [ "$RET" = true ]; then
  28.     # keep preseeded value
  29.     :
  30. else
  31.     # os-prober is may not yet be installed..
  32.     anna-install os-prober-udeb || true
  33.  
  34.     probed=$(os-prober) || true
  35.  
  36.     if echo "$probed" | os_needs_local_clock; then
  37.         # default to localtime for some OSes
  38.         db_set clock-setup/utc false
  39.         pri=low
  40.     fi
  41.  
  42.     if [ -z "$probed" ]; then
  43.         # installing the only OS, so use UTC
  44.         db_set clock-setup/utc true
  45.         db_get clock-setup/utc-auto
  46.         if [ "$RET" = true ]; then
  47.             pri=low
  48.         fi
  49.     fi
  50. fi
  51.  
  52. db_input $pri clock-setup/utc || true
  53. if ! db_go; then
  54.     exit 10 # back to main menu
  55. fi
  56.  
  57. rcsfile=/target/etc/default/rcS
  58. adjtimefile=/target/etc/adjtime
  59.  
  60. db_get clock-setup/utc
  61. if [ "$RET" = true ]; then
  62.     sed -i -e 's:^UTC="no":UTC="yes":' -e 's:^UTC=no:UTC=yes:' $rcsfile
  63.     sed -i -e 's:^LOCAL:UTC:' $adjtimefile
  64. else
  65.     sed -i -e 's:^UTC="yes":UTC="no":' -e 's:^UTC=yes:UTC=no:' $rcsfile
  66.     sed -i -e 's:^UTC:LOCAL:' $adjtimefile
  67. fi
  68.  
  69. anna-install rtc-modules || true
  70.  
  71. # This may not be necessary on all hardware; hwclock can do direct IO if
  72. # the rtc module is not loaded.
  73. log-output -t hw-detect modprobe -v rtc || log "rtc module not loaded"
  74. log-output -t hw-detect modprobe -v rtc-dev || log "rtc-dev module not loaded"
  75. update-dev
  76.  
  77. # rtc-dev creates a /dev/rtc0, so set up a symlink
  78. # XXX This won't be needed once a new udev (116) that
  79. # handles the symlink gets into Debian.
  80. if [ -e /dev/rtc0 ] && [ ! -e /dev/rtc ]; then
  81.     ln -sf rtc0 /dev/rtc
  82. fi
  83.  
  84. # bind mount /dev into /target/dev so that rtc devices are available for hwclock
  85. if mount -o bind /dev /target/dev; then
  86.     target_dev_mounted=1
  87. else
  88.     warning "failed to bind mount /target/dev"
  89. fi
  90.  
  91. cleanup () {
  92.     if [ "$target_dev_mounted" ] && ! umount /target/dev; then
  93.         warning "failed to unmount /target/dev bind mount"
  94.     fi
  95. }
  96.  
  97. db_progress INFO clock-setup/progress/hwclock
  98. log-output -t clock-setup chroot /target hwclock --systohc --debug &
  99. pid="$!"
  100. count=0
  101.  
  102. stop_hwclock () {
  103.     kill $pid || return
  104.     sleep 1
  105.     if [ -e /proc/$pid ]; then
  106.         kill -9 $pid || return
  107.     fi
  108. }
  109.  
  110. while sleep 1; do
  111.     if [ ! -e /proc/$pid ]; then
  112.         break
  113.     fi
  114.     count=$(expr $count + 1)
  115.     if [ "$count" = 30 ]; then
  116.         count=0
  117.         db_input critical clock-setup/hwclock-wait || true
  118.         if ! db_go; then
  119.             stop_hwclock
  120.             cleanup
  121.             exit 10 # back to main menu
  122.         fi
  123.         db_get clock-setup/hwclock-wait
  124.         if [ "$RET" = false ]; then
  125.             stop_hwclock
  126.             break
  127.         fi
  128.     fi
  129. done
  130.  
  131. cleanup
  132.